package com.smedi.ismedi.progress.core.port.adapter.persistence.mybatis.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smedi.ismedi.progress.core.port.adapter.persistence.model.ProgressEntity;
import com.smedi.ismedi.progress.core.port.adapter.persistence.model.VersionDetailEntity;
import com.smedi.ismedi.progress.core.port.adapter.persistence.model.VersionManageEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 特种设备信息表Mapper
 *
 * @author xienannan
 * @date 2021/08/28
 */
@Mapper
public interface VersionManageMapper extends BaseMapper<VersionManageEntity> {
    void updateVersionManage(Long projectId);

    void updateDate(VersionManageEntity versionManageEntity);

    /**
     * 查询当前项目的最大版本号
     * @param projectId 项目ID
     * @return 当前最大版本号
     */
    Integer queryCurrentProjectMaxVersion(@Param("projectId") Long projectId);

    /**
     * 查询当前最大ID
     * @return 当前最大ID
     */
    Integer queryVersionDetailMaxId();

    /**
     * 更新版本号
     * @param projectId 项目ID
     * @return 当前最大版本号
     */
    Integer updateProjectVersion(@Param("projectId") Long projectId,
                                 @Param("version") Integer version,
                                 @Param("id") Long id);

    /**
     * 更新版本号
     * @param projectId 项目ID
     * @return 当前最大版本号
     */
    Integer updateVersionDetailVersion(@Param("projectId") Long projectId,
                                 @Param("version") Integer version,
                                 @Param("id") Long id);

    /**
     * 插入version_manage信息
     * @param versionManageEntity 实体类
     * @return 影响记录数
     */
    Integer insertVersionManage(VersionManageEntity versionManageEntity);

    /**
     * 批量插入version_detail信息
     * @param versionDetailEntityList 任务详情集合
     * @return 影响记录数
     */
    Integer batchInsertVersionDetail(@Param("detailList") List<VersionDetailEntity> versionDetailEntityList);

    List<Long> selectProjecApproveStatus(@Param("projectId") Long projectId);


    void updateApproveStatus(@Param("id") Long id,@Param("status") String status);
}